맨위로가기

컴파일 언어

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

컴파일 언어는 소스 코드를 컴퓨터가 직접 실행할 수 있는 기계어로 변환하는 방식을 사용하는 프로그래밍 언어를 의미한다. 컴파일 방식은 실행 속도가 빠르고 하드웨어 제어가 용이하다는 장점이 있지만, 플랫폼 종속적이며 개발 시간이 길다는 단점도 존재한다. 컴파일러 언어로는 C, C++, 자바, 파스칼 등이 있으며, 컴파일러를 제작하는 데 사용되는 도구로는 ANTLR, Lex, Yacc 등이 있다.

더 읽어볼만한 페이지

  • 프로그래밍 언어 분류 - 하드웨어 기술 언어
    하드웨어 기술 언어(HDL)는 전자 시스템의 구조와 동작을 텍스트 기반으로 표현하는 언어로, 디지털 회로 설계의 핵심 도구로 사용되며, 시뮬레이션 및 디버깅을 통해 설계 검증을 수행한다.
  • 프로그래밍 언어 분류 - 고급 프로그래밍 언어
    고급 프로그래밍 언어는 기계어보다 높은 수준의 추상화를 제공하며, 변수, 객체, 함수 등의 개념을 사용하여 프로그래머가 기계의 세부 사항에서 분리되어 편리하게 프로그래밍할 수 있도록 하는 언어이다.
컴파일 언어
기본 정보
종류컴파일러에 의해 기계어로 번역되는 프로그래밍 언어
특징실행 속도가 빠름
메모리 관리 용이
운영체제에 종속적
디버깅 어려움
컴파일 언어 예시

2. 장점과 단점

컴파일 시에 네이티브 코드로 컴파일되는 프로그램은 실행 시에 번역되는 프로그램보다 더 빨라지는 경향이 있다. 이는 번역 프로세스의 오버헤드가 있기 때문이다. 그러나 실시간 컴파일러(JIT)와 같은 새로운 기술, 그리고 번역 프로세스의 전반적인 개선으로 인해 이 차이는 작아지고 있다. 바이트코드를 사용한 혼합 솔루션은 중간 정도의 효율을 보이는 경향이 있다.

저수준 프로그래밍 언어는 일반적으로 컴파일된다. 특히, 크로스 플랫폼 지원보다 효율을 중시하는 경우이다. 이러한 언어의 경우, 프로그램 코드와 머신 코드에 의해 실행되는 하드웨어 조작 사이에 1대 1 대응이 있어, 프로그래머가 중앙 처리 장치(CPU)와 메모리의 사용을 세세하게 제어하기 쉬워진다.[1]

2. 1. 컴파일 방식의 장점

네이티브 코드로 컴파일된 프로그램은 변환 오버헤드가 없기 때문에 인터프리터 방식보다 더 빠르게 실행되는 경향이 있다. 바이트코드 중간 형식을 사용하는 환경은 중간 속도를 내는 경향이 있다. JIT 컴파일은 일회성 시작 처리 시간 비용으로 네이티브 실행 속도를 낼 수 있게 해준다.

저수준 프로그래밍 언어인 어셈블리 및 C는 특히 크로스 플랫폼 지원보다는 효율성이 주요 관심사인 경우 일반적으로 컴파일된다. 이러한 언어의 경우 소스 코드와 결과 머신 코드 간에 더 많은 일대일 대응 관계가 있어 프로그래머가 하드웨어 사용을 더 쉽게 제어할 수 있다.[1]

일반적으로 인터프리터 언어에 대해서도 컴파일러를 작성하는 것이 가능하다. 예를 들어, Common Lisp는 Java 바이트코드(Java 가상 머신에 의해 해석됨), C 코드(이후 네이티브 머신 코드로 컴파일됨), 또는 직접 네이티브 코드로 컴파일할 수 있다.[2]

다중 컴파일 출력 언어를 지원하는 환경은 개발자에게 실행 속도 또는 크로스 플랫폼 호환성을 선택할 수 있는 제어를 제공한다.

2. 2. 컴파일 방식의 단점

컴파일 방식은 특정 운영체제나 하드웨어에 종속적인 코드를 생성할 수 있어, 크로스 플랫폼 개발에 어려움이 있을 수 있다. 코드 수정 후 매번 컴파일 과정을 거쳐야 하므로, 인터프리터 방식에 비해 개발 시간이 길어질 수 있다.

2. 3. JIT 컴파일러

JIT 컴파일은 일회성 시작 처리 시간 비용으로 네이티브 실행 속도를 낼 수 있게 해준다.[1]

조금만 노력하면, 기존의 인터프리터형 언어에서도 컴파일러를 작성하는 것이 항상 가능하다.[1] 예를 들어, Common Lisp는 Java 가상 머신에 의해 해석되는 Java 바이트 코드, C 코드(이후 네이티브 머신 코드로 컴파일됨), 또는 직접 네이티브 코드로 컴파일할 수 있다.[1] 여러 컴파일 대상을 지원하는 프로그래밍 언어는 개발자에게 실행 속도 또는 크로스 플랫폼 호환성 중 하나를 선택할 수 있게 해준다.[1]

3. 컴파일러 언어 목록

컴파일되는 것으로 알려진 언어들의 목록은 다음과 같다.

(하위 섹션 '주요 컴파일러 언어'와 '기타 컴파일러 언어'에서 동일한 내용이 상세하게 다루어지므로, 여기서는 생략한다.)

3. 1. 주요 컴파일러 언어

3. 2. 기타 컴파일러 언어

일반적으로 컴파일되는 것으로 여겨지는 언어는 다음과 같다.

프로그래밍 언어하위 언어
에이다
알골
베이직
C
C++
C# (바이트코드)
크레오
코볼
코브라
크리스탈
D
eC
에펠
얼랭 (바이트코드)
F# (바이트코드)
팩터 (후기 버전)
포스
포트란
Go
하스켈
하엑스 (바이트코드 또는 C++)
자바 (바이트코드)
자바스크립트 (바이트코드 JIT)
조비얼
줄리아
랩뷰, G
LISP
러쉬
머큐리
ML
(C, C++, 또는 Objective-C)
Open-URQ
파스칼
Objective-C
PL/I
RPG
러스트
Seed7
SPITBOL
스위프트
비주얼 폭스프로
비주얼 프롤로그
V (프로그래밍 언어)
W
지그


4. 컴파일러 도구

컴파일러를 만드는 데 사용되는 대표적인 도구들은 다음과 같다.

4. 1. 주요 도구

참조

[1] 웹사이트 Features and Characteristics of Compiled Languages https://www.sqa.org.[...]
[2] 웹사이트 Features and Characteristics of Compiled Languages https://www.sqa.org.[...] 2020-09-04



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com